#  log  首先创建日志存储路径.
import os
import logging
import django.utils.log
import logging.handlers

from oauth.settings.base import BASE_DIR

log_path = os.path.join(BASE_DIR, "logs")
if not os.path.exists(log_path):
	os.makedirs("logs")
# DJANGO_LOG_LEVEL=DEBUG

LOGGING = {
	'version': 1,
	'disable_existing_loggers': False,
	# 'disable_existing_loggers': True,
	'formatters': {  # 格式化
		# 详细的日志格式
		'standard': {
			'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
			          '[%(levelname)s][%(message)s]',
			'datefmt': '%Y-%m-%d %H:%M:%S'
		},
		# 简单的日志格式
		'simple': {
			'format': '[%(asctime)s] %(filename)s %(lineno)d-->%(message)s',
		},
		'console': {
			'format': '[%(asctime)s][%(levelname)s] %(pathname)s %(lineno)d -> %(message)s',
			'datefmt': '%Y-%m-%d %H:%M:%S'
		}
	},
	# 过滤器
	'filters': {
		'require_debug_true': {
			'()': 'django.utils.log.RequireDebugTrue',
		},
	},
	'handlers': {  # 处理器
		'console': {  # 在终端打印
			'level': 'DEBUG',
			'filters': ['require_debug_true'],  # 只有在Django debug为True时才在屏幕打印日志
			'class': 'logging.StreamHandler',
			'formatter': 'console'
		},
		'default': {  # 默认的
			'level': 'INFO',
			'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件，自动切
			'filename': os.path.join(BASE_DIR + "/logs/", "oauth.default.log"),  # 日志文件
			'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
			'backupCount': 3,  # 最多备份几个
			'formatter': 'standard',
			'encoding': 'utf-8',
		},
		'fileHandler': {
			'level': 'INFO',
			'class': 'logging.handlers.TimedRotatingFileHandler',
			'formatter': 'simple',
			'filename': os.path.join(BASE_DIR + "/logs/", "oauth.file.log")
		},
		'error': {  # 专门用来记错误日志
			'level': 'ERROR',
			'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件，自动切
			'filename': os.path.join(BASE_DIR + '/logs/', "oauth.error.log"),  # 日志文件
			'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
			'backupCount': 5,
			'formatter': 'standard',
			'encoding': 'utf-8',
		},
		'app': {
			'level': 'DEBUG',
			'class': 'logging.FileHandler',
			'filename': os.path.join(BASE_DIR + "/logs/", "oauth.app.log"),
			'formatter': 'simple',
		},

	},
	'loggers': {  # 记录器
		'django': {
			'handlers': ['error'],
			'level': 'DEBUG',
			'propagate': False
		},
		'app': {
			'handlers': ['app'],
			'level': 'DEBUG',
			'propagate': False
		},
		'page_processors': {
			'handlers': ['console', 'fileHandler'],
			'level': 'DEBUG',
		},
		'django.db.backends': {
			'handlers': ['console'],
			'propagate': True,
			'level': 'DEBUG',
		},
	}
}
